package van.planifolia.date;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;

/**
 * Created by Intellij IDEA<br>
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/11/7 16:06
 */
public class LocalDateDemo {
    public static void main(String[] args) {
        // 创建时间类的两种方法
        LocalDate localDate = LocalDate.now();
        LocalDate localDate1 = LocalDate.of(2022,11,7);
        System.out.println(localDate);
        System.out.println(localDate1);
        // 这三个方法分别是获取年月日的工具方法
        System.out.println("年份："+localDate.getYear()+"，月份："+localDate.getMonthValue()+"，日："+localDate.getDayOfMonth());
        // 那么剩下的就是日期的格式化转字符串与字符串解析成时间的工具方法了
        // 首先我们要创建时间的格式化对象,他和SimpleDateFormat一样都是创建一个格式化地址
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        // 然后我们在调用LocalDate中的实例方法传入这个dtf对象就能将时间格式化成字符串
        String format = localDate.format(dtf);
        System.out.println(format);
        // 那么对于时间字符串解析成LocalDate实例则还是需要调用LocalDate的静态方法传入时间字符串然后传入解析格式
        LocalDate time = LocalDate.parse("2019/07/13",dtf);
        System.out.println(time);
        //对于这个方法他还有一个兄弟类LocalDateTime,他相较于LocalDate多出来了时分秒这三个,他的使用方法与localData如出一辙
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime localDateTime1 = LocalDateTime.of(2019,7,13,12,30,30);
        // 获取时间具体信息
        System.out.println(localDateTime.getYear());
        System.out.println(localDateTime.getMonth().getValue());
        System.out.println("本月的第" + localDateTime.getDayOfMonth() + "天，本周" + localDateTime.getDayOfWeek() + "天，本年的第" + localDateTime.getDayOfYear()+"天");
        //  时间的格式化
        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format1 = localDateTime.format(dtf1);
        System.out.println(format1);
        System.out.println(LocalDateTime.parse("2001-07-13 12:30:30",dtf1));
    }
}
